package cz.tpj.database.mesto;

import cz.tpj.database.obrazky.Obrazok;
import cz.tpj.util.ErrorDatabase;
import cz.tpj.util.Validation;


/**
 * Slouží jako přepravka. Třída je koncipována podle databázové tabulky Mesto.
 * @author jabo
 */
public class City {
    private String id;
    private String name;
    private String shortDescription;
    private String longDescription;
    private Obrazok obrazky;
    private String zamestnanec;
    private String mapyNazov;

    //---------------------------konstruktory-----------------------------------
    
    /**
     * konstruktor triedy mesto, vytvori instanciu objektu mesto na zaklade zadanych 
     * parametrov.
     * @param Id (smallint 0 az 32767)
     * @param Name (varchar[150])
     * @param ShortDesc (varchar[500])
     * @param LongDesc (varchar[2000])
     * @param mapy_nazov (varchar[100])
     * @param Obrazky (smallint 0 az 32767)
     * @param Zam (smallint 0 az 32767)
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public City (String Id, String Name, String ShortDesc, String LongDesc, String mapy_nazov, Obrazok Obrazky, String Zam) throws ErrorDatabase {
        this.id = Id;
        this.name = Name;
        this.shortDescription = ShortDesc;
        this.longDescription = LongDesc;
        this.obrazky = Obrazky;
        this.mapyNazov = mapy_nazov;
        this.zamestnanec = Zam;
    }

    /**
     * konstruktor triedy mesto, vytvori instanciu objektu mesto na zaklade zadanych 
     * parametrov.
     * @param id (smallint 0 az 32767)
     * @param name (varchar[150])
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public City(String id, String name) throws ErrorDatabase {
        this.id = id;
        this.name = name;
    }

    /**
     * bezparametricky konstruktor triedy mesto
     */
    
    public City(){
    }
    
    //----------------------------metody----------------------------------------
    
    /**
     * nastavi hodnotu nazvu mesta
     * @param Name (varchar[150])
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setName(String Name) throws ErrorDatabase {
        Validation val = new Validation();
        this.name = val.validatedString("Name", Name, 0, 150);
    }

    /**
     * vrati hodnotu nazvu mesta
     * @return name (varchar[150])
     */
    
    public String getName(){
        return name;
    }
    
    /**
     * nastavi id mesta
     * @param Id (smallint 0 az 32767)
     * @throws cz.tpj.util.ErrorDatabase
     */

    public void setId(String Id) throws ErrorDatabase {
        Validation val = new Validation();
        this.id = val.validatedNumber("Id", Id, 0, 32767);
    }

    /**
     * vrati id mesta
     * @return id (smallint 0 az 32767)
     */
    
    public String getId() {
        return id;
    }

    /**
     * nastavi kratky popis mesta
     * @param shortDesc (vrahcar[500])
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setshortDescription(String shortDesc) throws ErrorDatabase {
        Validation val = new Validation();
        this.shortDescription = val.validatedString("shortDesc", shortDesc, 0, 500);
    }
    
    /**
     * vrati kratky popis mesta
     * @return shortDescription (vrahcar[500])
     */

    public String getshortDescription(){
        return shortDescription;
    }
    
    /**
     * nastavi dlhy popis mesta
     * @param longDesc (vrahcar[2000])
     * @throws cz.tpj.util.ErrorDatabase
     */

    public void setlongDescription(String longDesc) throws ErrorDatabase {
        Validation val = new Validation();
        this.longDescription = val.validatedString("longDesc", longDesc, 0, 2000);
    }
    
    /**
     * vrati id zamestnanca, ktory dane mesto pridal do databazy
     * @return zamestnanec (smallint o az 32767)
     */

    public String getZamestnanec(){
        return zamestnanec;
    }
    
    /**
     * nastavi id zamestnanca, ktory dane mesto pridal do databazy
     * @param employee_id (smallint o az 32767)
     * @throws cz.tpj.util.ErrorDatabase
     */

    public void setZamestnanec(String employee_id) throws ErrorDatabase {
        Validation val = new Validation();
        this.zamestnanec = val.validatedNumber("employee_id", employee_id, 0, 32767);
    }    
    
    /**
     * vrati dlhy popis mesta
     * @return longDescription (vrahcar[2000])
     */
    
    public String getlongDescription(){
        return longDescription;
    }

    public void setObrazky(Obrazok Obrazky) throws ErrorDatabase {
        this.obrazky = Obrazky;
    }
    
    /**
     * vrati obrazok pre dane mesto
     * @return obrazky
     */

    public Obrazok getObrazky () {
        return this.obrazky;
    }
    
    /**
     * nastavi nazov mesta pre API servera mapy.cz,
     * toto sa nastavuje, kvoli tomu, ze mapy.cz mozu uchovavat iny nazov 
     * mesta ako je v databaze nasej aplikacie, je to pre zabezpecenie
     * zobrazenia dobrych vysledkov vyhladania trasy na mapy.cz
     * @param mapynazov varchar[100]
     * @throws cz.tpj.util.ErrorDatabase
     */
    
    public void setMapyNazov (String mapynazov) throws ErrorDatabase  {
        Validation val = new Validation();
        this.mapyNazov = val.validatedString("mapynazov", mapynazov, 0, 100);
    }
    
    /**
     * vrati nazov mesta pre mapy.cz
     * @return mapyNazov varchar[100]
     */
    
    public String getMapyNazov() {
        return this.mapyNazov;
    }

}
